#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
GLfloat angle = 0.0;

void wsl_init() __attribute__((constructor));
void wsl_init()
{
    char *wslDistro = std::getenv("WSL_DISTRO_NAME");
    if (wslDistro && wslDistro[0] != '\0') {
        setenv("DISPLAY", "172.20.10.3:0.0", 1);
        setenv("MESA_GL_VERSION_OVERRIDE", "3.3", 1);
    }
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);

    // glBegin(GL_TRIANGLES);
    // glColor3f(1.0, 0.0, 0.0); // 设置颜色为红色
    // glVertex3f(-0.6, -0.6, 0.0);
    // glColor3f(0.0, 1.0, 0.0); // 设置颜色为绿色
    // glVertex3f(0.6, -0.6, 0.0);
    // glColor3f(0.0, 0.0, 1.0); // 设置颜色为蓝色
    // glVertex3f(0.0, 0.6, 0.0);
    // glEnd();
    glColor3f(1.0, 0.0, 0.0); // 设置颜色为红色
    glRotatef(angle, 0.0f, 1.0f, 0.0f);
    angle += 30;
    if (angle >= 360) {
        angle = 0;
    }

    glutWireTeapot(0.5);

    glutSwapBuffers();
}

void key_press(unsigned char, int, int)
{
    glutPostRedisplay();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(400, 400);
    glutCreateWindow("Simple OpenGL Example");

    glClearColor(0.0, 0.0, 0.0, 0.0);

    glutDisplayFunc(display);
    glutKeyboardFunc(key_press);
    glutMainLoop();

    return 0;
}
